# 创建进程
"""
linux系统里面可以调用fork()函数创建进程：

import os
pid=os.fork()
if pid<0:
    print("创建进程失败")
elif pid==0:
    print("this is child process")
else :
    print("this is parent process")

windows里面需要导入multiprocessing
"""
from multiprocessing import Process
from time import sleep
import os


def task(s):
    while True:
        sleep(s)
        print("任务1------pid:{}".format(os.getpid()))
        pass


def task2(s):
    while True:
        sleep(s)
        print("任务2------pid:{}".format(os.getpid()))
        pass


if __name__ == "__main__":  # 主进程
    # 子进程
    """
    常用参数：
        target : 传递给进程的任务
        name : 进程名字
        arg : 给任务传递的参数，元组
    常用方法：
        start() : 启动进程并执行任务
        run() : 只是执行了任务但是没有启动进程
        terminate() : 终止
    全局变量：
        多进程对于全局变量访问，在每一个进程里面都放一个全局变量，保证每个进程访问变量互不干扰
    """
    p = Process(target=task, name="任务1", args=(1,))
    p.start()
    # print(p.name)
    p2 = Process(target=task2, name="任务2", args=(2,))
    p2.start()
    # print(p2.name)
    number = 1
    while True:
        number += 1
        sleep(0.2)
        if number == 100:
            p.terminate()
            p2.terminate()
            break
    print("进程终止------------")
